使用集合操作的先決條件:
1.有兩組query
2.兩組query回傳的欄位數量必須一樣,資料型態必須類似,且欄位的順序也要一樣
UNION取兩組查詢結果的聯集,和UNION ALL的差別是UNION會將重複的結果給過濾掉,類似SELECT DISTINCT的作用,而UNION ALL則是單純將結果合併在一起,會跑得稍微快一點。
例子:
query 1:篩選出有預定過桌球場的客戶,共有26人
query 2:篩選出有預定過撞球檯的客戶,共有28人
使用UNION ALL取兩者之間的聯集,兩邊都有的紀錄重複出現,共54筆
使用UNION取兩者之間的聯集並過濾重複的紀錄,回傳30筆資料
取兩邊都有出現的資料行,INTERSECT ALL則是會將在任意一條query中多次出現的資料行加入INTERSECT的結果中。
將query 1 & 2的結果取交集,這裡兩種情況都會回傳24筆資料。
取差集,可以理解成第一條query的結果扣除在第二條query結果中也出現的內容。
從先前的結果得知query 1跟query 2有24筆相同的紀錄,所以query 1的26筆刪去相同的24筆之後=兩筆,正確無誤。